class A():
    # 可以通过对象名()调用这个方法并且传参
    def __call__(self, *args, **kwargs):
        print("我被调用了")
        print(args)  # 接收参数

    def __str__(self):
        return "这是__str__方法"

    # 定义调用方法和__str__类似，
    def __repr__(self):
        return "这是__repr__方法"

a = A()
# print(a)
# a(10,20,30)  # 相当于调用了__call__方法  可以传参数
print(a)
print("你好%s" %a)
print(str(a))
print("hello%r" %a)
print(repr(a))
"""
如果print(对象名)的时候同时存在__str__和__repr__只会执行__str__，如果只有__repr__就执行__repr__
如果都没有打印内存地址引用
---调用__str__---
1.print(对象名)
2.%s 
3.str()
---调用__repr__---
1.%r
2.repr()
__str__比较规范给用户看的，__repr__给程序员看的
"""